home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: delta / whiteline CD Series - delta.iso / progtool / c / egem_210 / egem / source / rc_ob_c.c < prev    next >
C/C++ Source or Header  |  1995-11-25  |  3KB  |  164 lines

  1.  
  2. #define __RC_OBJ_C__
  3. #include "e_gem.h"
  4.  
  5. void ob_dostate(OBJECT *tree, int obj, int state)
  6. {
  7.     tree[obj].ob_state |= state;
  8. }
  9.  
  10. void ob_undostate(OBJECT *tree, int obj, int state)
  11. {
  12.     tree[obj].ob_state &= ~state;
  13. }
  14.  
  15. int ob_isstate(OBJECT *tree, int obj, int state)
  16. {
  17.     if ((tree[obj].ob_state & state)==state)
  18.         return (TRUE);
  19.     else
  20.         return (FALSE);
  21. }
  22.  
  23. void ob_doflag(OBJECT *tree, int obj, int flag)
  24. {
  25.     tree[obj].ob_flags |= flag;
  26. }
  27.  
  28. void ob_undoflag(OBJECT *tree, int obj, int flag)
  29. {
  30.     tree[obj].ob_flags &= ~flag;
  31. }
  32.  
  33. int ob_isflag(OBJECT *tree, int obj, int flag)
  34. {
  35.     if ((tree[obj].ob_flags & flag)==flag)
  36.         return (TRUE);
  37.     else
  38.         return (FALSE);
  39. }
  40.  
  41. void ob_xywh(OBJECT *tree, int obj, GRECT *rec)
  42. {
  43.     *rec = *((GRECT *) &tree[obj].ob_x);
  44. }
  45.  
  46. static char **typetest(OBJECT *tree, int obj)
  47. {
  48.     OBJECT *t = tree + obj;
  49.     int ot;
  50.  
  51.     switch ((ot = t->ob_type) & 0xff)
  52.     {
  53.     case G_TEXT:
  54.     case G_FTEXT:
  55.     case G_BOXTEXT:
  56.     case G_FBOXTEXT:
  57.         return &(t->ob_spec.tedinfo->te_ptext);
  58.     case G_STRING:
  59.     case G_BUTTON:
  60.     case G_TITLE:
  61.         return &(t->ob_spec.free_string);
  62.     default:
  63.         if ((ot & G_TYPE)==G_XTEXT)
  64.             return ((char **) &(t->ob_spec.userblk->ub_parm));
  65.         else
  66.             return (NULL);
  67.     }
  68. }
  69.  
  70. char *ob_get_text(OBJECT *tree, int obj, int clear)
  71. {
  72.     char **te;
  73.  
  74.     if (te = typetest(tree, obj))
  75.     {
  76.         if (clear)
  77.             **te = '\0';
  78.         return (*te);
  79.     } else
  80.         return (NULL);
  81. }
  82.  
  83. void ob_set_text(OBJECT *tree, int obj, char *text)
  84. {
  85.     char **te;
  86.  
  87.     if (te = typetest(tree, obj))
  88.         *te = text;
  89. }
  90.  
  91. void ob_draw_dialog(OBJECT *tree,int x,int y,int w,int h)
  92. {
  93.     int tx,ty,tw,th;
  94.  
  95.     form_center(tree,&tx,&ty,&tw,&th);
  96.     form_dial(FMD_START,tx,ty,tw,th,tx,ty,tw,th);
  97.  
  98.     if (x|y|w|h)
  99.         form_dial(FMD_GROW,x,y,w,h,tx,ty,tw,th);
  100.     objc_draw(tree,0,MAX_DEPTH,tx,ty,tw,th);
  101. }
  102.  
  103. void ob_undraw_dialog(OBJECT *tree,int x,int y,int w,int h)
  104. {
  105.     int tx,ty,tw,th;
  106.  
  107.     form_center(tree,&tx,&ty,&tw,&th);
  108.     if (x|y|w|h)
  109.         form_dial(FMD_SHRINK,tx,ty,tw,th,x,y,w,h);
  110.     form_dial(FMD_FINISH,tx,ty,tw,th,tx,ty,tw,th);
  111. }
  112.  
  113. #ifdef __GNUC__
  114. int rc_inside(int x, int y, GRECT *rec)
  115. {
  116.     return (x >= rec->g_x && x < rec->g_x + rec->g_w &&
  117.             y >= rec->g_y && y < rec->g_y + rec->g_h);
  118. }
  119. #endif    /* __GNUC__ */
  120.  
  121. #ifdef LATTICE
  122. void rc_grect_to_array(GRECT *rec,int *pxy)
  123. {
  124.     pxy[0] = rec->g_x;
  125.     pxy[1] = rec->g_y;
  126.     pxy[2] = rec->g_x + rec->g_w - 1;
  127.     pxy[3] = rec->g_y + rec->g_h - 1;
  128. }
  129. #endif    /* LATTICE */
  130.  
  131. void rc_array_to_grect(int *pxy,GRECT *rec)
  132. {
  133.     rec->g_x = pxy[0];
  134.     rec->g_y = pxy[1];
  135.     rec->g_w = pxy[2] - pxy[0] + 1;
  136.     rec->g_h = pxy[3] - pxy[1] + 1;
  137. }
  138.  
  139. int EvntMulti(EVENT *evnt_struct)
  140. {
  141.     return (evnt_struct->ev_mwich = evnt_multi(evnt_struct->ev_mflags,
  142.         evnt_struct->ev_mbclicks,
  143.         evnt_struct->ev_bmask,
  144.         evnt_struct->ev_mbstate,
  145.         evnt_struct->ev_mm1flags,
  146.         evnt_struct->ev_mm1x,
  147.         evnt_struct->ev_mm1y,
  148.         evnt_struct->ev_mm1width,
  149.         evnt_struct->ev_mm1height,
  150.         evnt_struct->ev_mm2flags,
  151.         evnt_struct->ev_mm2x,
  152.         evnt_struct->ev_mm2y,
  153.         evnt_struct->ev_mm2width,
  154.         evnt_struct->ev_mm2height,
  155.         evnt_struct->ev_mmgpbuf,
  156.         ((unsigned long)evnt_struct->ev_mthicount << 16) + evnt_struct->ev_mtlocount,
  157.         &evnt_struct->ev_mmox,
  158.         &evnt_struct->ev_mmoy,
  159.         &evnt_struct->ev_mmobutton,
  160.         &evnt_struct->ev_mmokstate,
  161.         &evnt_struct->ev_mkreturn,
  162.         &evnt_struct->ev_mbreturn));
  163. }
  164.